const install = (Vue, vm) => {
  // 配置网络请求参数
  Vue.prototype.$u.http.setConfig({
    baseUrl: "https://api.shop.eduwork.cn",
    dataType: "json",
    showLoading: true,
    loadingText: "请求中...",
    loadingTime: 5000,
    originalData: true, // 是否在拦截器中返回服务端的原始数据
    loadingMask: true, // 展示loading蒙层，防止触摸穿透
    header: {
      "content-type": "application/json;charset=UTF-8",
    },
  });

  // 请求拦截，配置Token等参数
  Vue.prototype.$u.http.interceptor.request = (config) => {
    // 配置请求头token信息
		// const token =  uni.getStorageSync('istoken') ;
    config.header.Authorization = `Bearer ${vm.vuex_token}`;
    return config;
  };

  // 响应拦截，判断状态码是否通过
  Vue.prototype.$u.http.interceptor.response = (res) => {
    // 解构响应的状态码和数据包
    let { statusCode, data } = res;
    // 响应状态成功
    if (statusCode < 400) {
      // 返回数据包
      return data;
      // 响应400，服务器不理解请求语法
    } else if (statusCode == 400) {
      // 弹窗提示错误信息
      vm.$u.toast(data.message);
      return false;
    }
    // 响应401
    else if (statusCode == 401) {
      // 身份验证失败
      if (data.message == "Unauthorized") {
        vm.$u.toast("账号或密码错误");
      } else {
        // token失效(校验用户登录状态是否有效)
        vm.$u.utils.isLogin();
      }
      return false;
      // 请求参数未通过验证
    } else if (statusCode == 422) {
      // 解构错误对象
      const { errors } = data;
      // 提示错误对象中的第一条
      let errMsg = Object.values(errors)[0][0];
      vm.$u.toast(errMsg);
      return false;
    } else {
      vm.$u.toast("请求超时");
      return false;
    }
  };

  // 手动挂载patch请求
  vm.$u.patch = (url, params = {}, header = {}) => {
    // 利用post请求模拟patch请求
    const _params = {
      ...params,
      _method: "PATCH",
    };
    return vm.$u.post(url, _params, header);
  };
};

export default install;
